package com.doit.day06

import scala.util.Sorting

object _07_柯里化 {
  def main(args: Array[String]): Unit = {
    def add(a:Int,b:Int)={a+b}

    //柯里化的写法
    // 一个参数列表中的多个参数被转换成了多个参数列表 ==》 柯里化的写法
    def add1(a:Int)(b:Int)={a+b}

    val i: Int = add(1, 2)

    val intToInt: Int => Int = add1(1)
    val i1: Int = intToInt(2)


    //将我写的方法变成一个分段的函数
    val add2 = (a:Int)=>{
      (b:Int)=>a+b
    }
    //减少参数的传递   场景： 售价  不同节假日打折情况不一样
    def dis1(price:Double,dis:Double)=price * dis

    def dis(price:Double)(dis:Double)=price * dis

    dis1(100,0.9)
    dis1(100,0.8)
    dis1(100,0.7)

    val aaa: Double => Double = dis(100)
    aaa(0.9)
    aaa(0.8)
    aaa(0.7)

    //它可以更好的做类型的推断
//    def test(a:A,b:a.B)={println(",,,")}
//    def test(a:A)(b:a.B)={println(",,,")}


//    val ints: List[Int] = List(1, 2, 3)
//    ints.sorted

//    Sorting.quickSort()



  }

}
/*class A{
  class B
}*/
